<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="module-contextlib.html" />
<link rel="prev" href="module-main.html" />
<link rel="parent" href="python.html" />
<link rel="next" href="warning-categories.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>26.4 warnings -- Warning control</title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="26.3 __main__  "
  href="module-main.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="26. python Runtime Services"
  href="python.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="26.4.1 warning Categories"
  href="warning-categories.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="module-main.html">26.3 __main__  </a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="python.html">26. Python Runtime Services</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="warning-categories.html">26.4.1 Warning Categories</a>
</div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h1><a name="SECTION0028400000000000000000">
26.4 <tt class="module">warnings</tt> --
         Warning control</a>
</h1>

<p>
<a name="module-warnings"></a>
<a id='l2h-5203' xml:id='l2h-5203'></a>

<p>

<span class="versionnote">New in version 2.1.</span>

<p>
Warning messages are typically issued in situations where it is useful
to alert the user of some condition in a program, where that condition
(normally) doesn't warrant raising an exception and terminating the
program.  For example, one might want to issue a warning when a
program uses an obsolete module.

<p>
Python programmers issue warnings by calling the <tt class="function">warn()</tt>
function defined in this module.  (C programmers use
<tt class="cfunction">PyErr_Warn()</tt>; see the
<em class="citetitle"><a
 href="../api/exceptionHandling.html"
 title="Python/C API Reference
Manual"
 >Python/C API Reference
Manual</a></em> for details).

<p>
Warning messages are normally written to <code>sys.stderr</code>, but their
disposition can be changed flexibly, from ignoring all warnings to
turning them into exceptions.  The disposition of warnings can vary
based on the warning category (see below), the text of the warning
message, and the source location where it is issued.  Repetitions of a
particular warning for the same source location are typically
suppressed.

<p>
There are two stages in warning control: first, each time a warning is
issued, a determination is made whether a message should be issued or
not; next, if a message is to be issued, it is formatted and printed
using a user-settable hook.

<p>
The determination whether to issue a warning message is controlled by
the warning filter, which is a sequence of matching rules and actions.
Rules can be added to the filter by calling
<tt class="function">filterwarnings()</tt> and reset to its default state by calling
<tt class="function">resetwarnings()</tt>.

<p>
The printing of warning messages is done by calling
<tt class="function">showwarning()</tt>, which may be overridden; the default
implementation of this function formats the message by calling
<tt class="function">formatwarning()</tt>, which is also available for use by custom
implementations.

<p>

<p><br /></p><hr class='online-navigation' />
<div class='online-navigation'>
<!--Table of Child-Links-->
<a name="CHILD_LINKS"><strong>Subsections</strong></a>

<ul class="ChildLinks">
<li><a href="warning-categories.html">26.4.1 Warning Categories</a>
<li><a href="warning-filter.html">26.4.2 The Warnings Filter</a>
<li><a href="warning-functions.html">26.4.3 Available Functions</a>
</ul>
<!--End of Table of Child-Links-->
</div>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="26.3 __main__  "
  href="module-main.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="26. python Runtime Services"
  href="python.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="26.4.1 warning Categories"
  href="warning-categories.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="module-main.html">26.3 __main__  </a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="python.html">26. Python Runtime Services</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="warning-categories.html">26.4.1 Warning Categories</a>
</div>
</div>
<hr />
<span class="release-info">Release 2.5.1, documentation updated on 18th April, 2007.</span>
</div>
<!--End of Navigation Panel-->
<address>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</address>
</body>
</html>
